﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BOL;
using WebLib;
using System.Data;
using System.Data.Linq;
using System.Data.SqlClient;
using Website.Logger;
using System.IO;
using System.Web.Script.Services;
using System.Web.Services;
using AjaxControlToolkit;
using UtilityExtensions;


namespace UILGestion.Seguridad.Empleado
{
    public partial class EmpleadoEditForm : System.Web.UI.Page
    {
        public EmpleadoEditForm()
        {
            _db = new dbGestionDataContext(Parametros.strConnString);
            BL= new BOL.EmpleadoBL();
        }


        private dbGestionDataContext _db;
        private EmpleadoBL BL;


        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {

                if (!Page.IsPostBack)
                {

                    internalid.Value = (string)Request.QueryString["id"];
                    type.Value = (string)Request.QueryString["type"];
                    if (type.Value == "") { type.Value = "A"; }
                    menuCtrl1.loadMenuSeguridad();
                    formatForm();



                }


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

        private void ShowComboBox()
        {
            monedaDDL.DataValueField = "idInternal";
            monedaDDL.DataTextField = "descripcion";
            monedaDDL.DataSource = new BOL.ListValueBL().GetMoneda();
            monedaDDL.DataBind();
        }

        private void formatForm()
        {
            ShowComboBox();
            if (type.Value == "E")
            {
                var empleado = DbUtil.Db.Empleados.SingleOrDefault(p => p.idInternal == internalid.Value.ToInt());
                if (empleado != null)
                {
                    descripcionTextBox.Text = empleado.descripcion;
                    srtTextBox.Text = empleado.atte;
                    nombreTextBox.Text = empleado.nombre;
                    apePatTextBox.Text = empleado.apePaterno;
                    ApeMatTextBox.Text = empleado.apeMaterno;
                    dniTextBox.Text = empleado.dni;
                    telefonoTextBox.Text = empleado.telefono;

                    faxTextBox.Text = empleado.fax;
                    emailTextBox.Text = empleado.email;
                    activoCheckBox.Checked = !empleado.inActivo.Value;


                    accesoCheckBox.Checked=empleado.tieneAcceso.Value;
                    modCompraCHK.Checked=empleado.bitModuloCompra.Value;
                    modVentaCHK.Checked=empleado.bitModuloVenta.Value;
                    modAlmacenCHK.Checked=empleado.bitModuloAlmacen.Value;

                    totalAprobadoOCTXT.Text = empleado.montoAprobraOC.Value.ToString();
                    usuarioTextBox.Text=empleado.usuario;
                    passwordTextBox.Text = string.Empty;


                }
                AutoCheckBox.Checked = false;

            }
            else
            {
                activoCheckBox.Checked = true;
                AutoCheckBox.Checked = true;
            }



        }


        private int InsertarEmpleado()
        {
            
            if (AutoCheckBox.Checked)
            {
                descripcionTextBox.Text = String.Format("{0} {1} {2} {3}",
                                                    srtTextBox.Text.Trim(),
                                                    nombreTextBox.Text.Trim(),
                                                    apePatTextBox.Text.Trim(),
                                                    ApeMatTextBox.Text.Trim());

            }
            if (passwordTextBox.Text.Trim().Length > 0)
            {

            }


            if (totalAprobadoOCTXT.Text == "")
                totalAprobadoOCTXT.Text = "0";

            int result = BL.add(_db,
                           descripcionTextBox.Text.Trim(),
                           nombreTextBox.Text.Trim(),
                           srtTextBox.Text.Trim(),
                           apePatTextBox.Text.Trim(),
                           ApeMatTextBox.Text.Trim(),
                           dniTextBox.Text.Trim(),
                           telefonoTextBox.Text.Trim(),
                           faxTextBox.Text.Trim(),
                           emailTextBox.Text.Trim(),
                           direccionTXT.Text.Trim(),
                           !activoCheckBox.Checked,
                           accesoCheckBox.Checked, 
                           modCompraCHK.Checked, 
                           modVentaCHK.Checked, 
                           modAlmacenCHK.Checked, 
                           totalAprobadoOCTXT.Text.ToDecimal().Value,
                           monedaDDL.SelectedValue.ToInt(),
                           usuarioTextBox.Text, 
                           passwordTextBox.Text
                           );

            return result;

        }
        private void UpdateEmpleado()
        {

            if (totalAprobadoOCTXT.Text == "")
                totalAprobadoOCTXT.Text = "0";

            BL.update(_db,
                            internalid.Value.ToInt(),
                           descripcionTextBox.Text.Trim(),
                           nombreTextBox.Text.Trim(),
                           srtTextBox.Text.Trim(),
                           apePatTextBox.Text.Trim(),
                           ApeMatTextBox.Text.Trim(),
                           dniTextBox.Text.Trim(),
                           telefonoTextBox.Text.Trim(),
                           faxTextBox.Text.Trim(),
                           emailTextBox.Text.Trim(),
                           direccionTXT.Text.Trim(),
                           !activoCheckBox.Checked,
                           accesoCheckBox.Checked,
                           modCompraCHK.Checked,
                           modVentaCHK.Checked,
                           modAlmacenCHK.Checked,
                           totalAprobadoOCTXT.Text.ToDecimal().Value,
                           monedaDDL.SelectedValue.ToInt(),
                           usuarioTextBox.Text,
                           passwordTextBox.Text);

        }

        protected void btnSaveContinue_Click(object sender, EventArgs e)
        {
            try
            {
                if ((sender as Button).ID == saveBTN.ID)
                {

                    if (type.Value == "E") { this.UpdateEmpleado(); }
                    if (type.Value == "A") {   internalid.Value  = this.InsertarEmpleado().ToString(); }

                    Response.Redirect("EmpleadoReadForm.aspx?id=" + internalid.Value, true);

                }
                if ((sender as Button).ID == cancelarBTN.ID)
                {
                    Response.Redirect("EmpleadoListForm.aspx", true);
                }
               
               
               

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

       

    }
}